package com.example.club_mvvm.respository

import com.example.club_mvvm.http.ApiService
import com.example.club_mvvm.http.RetrofitManager
import com.example.club_mvvm.http_hilt.mall_api.MallApi
import com.example.club_mvvm.http_hilt.api.Api
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOn
import okhttp3.RequestBody
import javax.inject.Inject

/**
 * @author yaotianxue
 * @description 仓库
 * @date 2025/1/11
 */
class MainRepository @Inject constructor() {
    //lateinit 延迟加载：必须要有初始化的代码
    //by lazy 惰性初始化：什么时候用什么时候才创建，如果都没用到，永远不会创建
//    lateinit var api:Api
//val api:Api =  RetrofitManager.getInstance().create(Api::class.java)
    //不使用依赖注入
    val api: ApiService  by lazy {
        RetrofitManager.getInstance().create(ApiService::class.java)
    }

    //使用依赖注入
    @Inject
    lateinit var mallApi: MallApi

    @Inject
    lateinit var api_:Api

    /**
     * 第一套接口：版本更新
     */
    fun appLevelCheck() = flow {
        emit(api_.appLevelCheck())
    }.flowOn(Dispatchers.IO)

    /**
     * 第二套接口：广告数据
     */
    fun cmallAdInfo(body:RequestBody) = flow {
        emit(mallApi.cmallAdInfo(body))
    }.flowOn(Dispatchers.IO)




    //数据---》流
    fun getVideoData(params:Map<String,String>) = flow {
        emit(api.getVideoData(params))
    }.flowOn(Dispatchers.IO)
}